package cn.itcast.nems.studentrecord.dto;

import cn.itcast.nems.common.QueryParam;
import lombok.Data;

import java.time.LocalDate;
import java.util.List;

/**
 * 学员过滤接口参数
 *
 * @author ChangLu.Gao
 * @version v1.0
 * @program nems-server
 * @description 学员过滤接口参数
 * @date 2023/11/14 11:17
 */
@Data
public class StudentRecordQueryDTO implements QueryParam {
    /**
     * 班级ID集合
     */
    private List<Integer> clazzIds;
    /**
     * 学籍号
     */
    private String id;
    /**
     * 学员ID
     */
    private Integer studentId;
    /**
     * 姓名
     */
    private String name;
    /**
     * 状态
     */
    private String state;
    /**
     * 缴费状态  CREATE("创建订单"), PART_PAID("部分支付"), ALL_PAID("完成支付"), ORDER_CANCEL("订单取消"),INVOICED("开取收据") ;
     */
    private String orderType;

    /**
     * 缴费状态  0|未完成缴费、1|已完成缴费
     */
    private Integer paidState ;
    /** 班级名称*/
    private String className;
    /** 校区ID*/
    private String schoolId;
    /** 授课模式*/
    private String teachingModel;
    /** 学科ID*/
    private String subjectId;
    /** 班级类型ID*/
    private String classTypeId;
    /**
     * 排除的学科ID
     */
    private List<String> excludeSubjectIds;
    /**
     * 是否可升级
     */
    private Boolean upgradeable;
    /**
     * 是否包含待定班
     */
    private Boolean includeWait = Boolean.TRUE;
    /**
     * 是否包含待删班
     */
    private Boolean includeWaitDeleted = Boolean.FALSE;
    /**
     * 开班日期下限
     */
    private LocalDate minStartDate;
    /**
     * 开班日期上限
     */
    private LocalDate maxStartDate;
    /**
     * 唯一码值
     */
    private String uniqueCode;
    /**
     * 学籍操作锁;枚举值：0｜无锁、1｜已上锁；场景：处于升班场景中的学籍，不允许再办理转班等其他操作。
     */
    private Byte lockFlag;
    /**
     * 学号
     */
    private String StudentNo;
    /**
     * 学员ID集合
     */
    private List<Integer> studentIds;
    /**
     * 是否待定班级, true: 是
     */
    private Boolean delayFlag;
    /**
     * 是否休学班级,true:是
     */
    private Boolean suspensionFlag;
    /**
     * 是否包含出班学籍
     */
    private Boolean includeLeaveClazz;
    /**
     * 是否包含无效的学籍
     */
    private Boolean includeInvalid = false;
    /**
     * 统计标识
     */
    private Boolean statisticsFlag ;

    /**
     * 是否排除用户组
     */
    private Boolean excludeFlag ;

    private Boolean transfer;
}
